package com.zjmzxfzhl.modules.app.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zjmzxfzhl.common.core.base.BaseService;
import com.zjmzxfzhl.modules.app.entity.AppProj;
import com.zjmzxfzhl.modules.app.form.*;
import com.zjmzxfzhl.modules.sys.entity.SysOrg;
import com.zjmzxfzhl.modules.sys.entity.vo.ElTree;

import java.util.List;

/**
 * Service
 * 
 * @author 张森荣
 */
public interface AppProjService extends BaseService<AppProj> {
    /**
     * 分页查询
     * 
     * @param page
     * @param appProj
     * @return
     */
    IPage<AppProj> list(IPage<AppProj> page, AppProjVo appProj);

    /**
     * 新增项目，自动计算机构级别、机构级次码、是否叶子
     *
     * @param appProj
     * @return
     */
    boolean saveAppProj(AppProj appProj);

    /**
     * 机构管理，机构树数据
     *
     * @return
     */
    List<ElTree> getTreeData(AppProjVo appProj,Integer current, Integer size, String parentId, Integer level);

    /**
     * 移动项目树，自动计算机构级别、机构级次码、是否叶子
     *
     * @param appProj
     * @return
     */
    boolean moveTree(AppProj appProj,String parentId);

    /**
     * 计算数量
     *
     * @param appProj
     * @return
     */
    Integer selectRowCount(AppProj appProj);

    /**
     * 批量删除
     *
     * @return
     */
    boolean delByIds(String ids);
    /**
     * 根据id查询
     *
     * @return
     */
    AppProj queryById(String id);

    /**
     * 新增项目，自动计算机构级别、机构级次码、是否叶子
     *
     * @param appProj
     * @return
     */
    boolean updateAppProj(AppProj appProj);

    /**
     * 统计项目概括
     *
     * @param masterUserId
     * @return
     */
    ProjSumVo getProjSun(String masterUserId);

    /**
     * 变更任务状态（待办的）
     *
     * @return
     */
    boolean wait(String projId);

    /**
     * 变更任务状态（进行中）
     *
     * @return
     */
    boolean inProgress(String projId);

    /**
     * 变更任务状态（已完成）
     *
     * @return
     */
    boolean finish(String projId);

    /**
     * 变更任务状态（已终止）
     *
     * @return
     */
    boolean close(String projId);

    /**
     * 变更任务状态（已中止）
     *
     * @return
     */
    boolean suspend(String projId);

    /**
     * 分页查询
     *
     * @param
     * @return
     */
    List<AppProj> getMeetProj(String[] idsArr);

    /**
     * 面包屑导航
     *
     * @return
     */
    List<ProjCrumbVo> projCrumb(String projId);

    /**
     * 分页查询
     *
     * @param
     * @return
     */
    void useTemplate(String projId,String dirId);
}
